Das Formular FrmZuordnung
aus Testverwaltung.mdb enthält rechts oben das Textfeld
Zeitbudget. Ein Klick auf
fügt einen voreingestellten Wert in Minuten ein. Die Voreinstellung ist
gleich der Zahl der Musterlösungspaare unter der Überschrift Lösung.
Ein Klick auf die Schaltfläche
startet die Ereignisprozedur BtnVoreinstellenZeitbudget_Click().
Diese berechnet den Defaultwert in einer einfachen Form der
DAO-Satzverarbeitung aus
dem Recordset rstZOLösungen:
Füge einen Defaultwert für das Zeitbudget ein Zähle die Sätze mit dem laufenden Fragenschlüssel von ZUORDNUNGS_LÖSUNGEN Falls Ergebnis > 0 trage die Voreinstellung einDie folgende Prozedur mischt mengen- und satzorientierte Zugriffe: Zuerst erstellt eine mengenorientierte SQL-Abfrage den Recordset rstZOLösungen. Dieser enthält lediglich einen einzigen Satz mit dem gesuchten Defaultwert. Die With-Klammer weist diesen Wert der Variablen voreingestelltesZeitbudget zu und schliesst den Recordset.
'--- Zeitbudget voreinstellen ' (Zeitbudget = Zahl der Lösungspaare der Zuordnungsaufgabe in Minuten) Private Sub BtnVoreinstellenZeitbudget_Click() Dim rstZOLösungen As Recordset Dim lfFragenschlüssel As Long Dim voreingestelltesZeitbudget As Single '-- Fragenschlüssel = Datenquelle des (geöffneten) Formulars FrmAllgemeines lfFragenschlüssel = [Forms]![FrmAllgemeines]![Fragenschlüssel] '-- Öffne Recordset aus dem einzigen Satz. Dieser nennt im Attribut Zahl_ZOLösungen die ' Zahl der Sätze mit dem Wert lfFragenschlüssel der Tabelle ZUORDNUNGS_LÖSUNGEN Set rstZOLösungen = CurrentDb.OpenRecordset("SELECT " & _ "Count(Fragenschlüssel) " & _ "AS [Zahl_ZOLösungen] FROM ZUORDNUNGS_LÖSUNGEN " & _ "WHERE Fragenschlüssel=" & lfFragenschlüssel & ";") '-- Position auf dem ersten (und einzigen) Satz der Ergebnistabelle des obigen SQL-Befehls With rstZOLösungen voreingestelltesZeitbudget = !Zahl_ZOLösungen .Close End With Set rstZOLösungen = Nothing '-- Zuordnungslösung bereits eingetragen? If voreingestelltesZeitbudget > 0 Then 'Eintrag vorhanden Me![TxfZeitbudget] = voreingestelltesZeitbudget Else MsgBox "Keine Voreinstellung berechenbar. Tragen Sie zuerst die Lösung ein", _ vbOKOnly + vbExclamation, "Voreinstellung" End If End Sub
Erläuterungen zur VBA-Syntax
_ setzt eine Anweisung auf der nächsten Codezeile fort
& verknüpft zwei Zeichenfolgen ("Apfel" & "saft" ergibt zum Beispiel "Apfelsaft")
Auf einen Punkt . folgt ein systemdefinierter Name, auf ! ein benutzerdefinierter Name
Satzorientierte
Verarbeitung unter DAO
Satzverarbeitung
in einer Schleife
MS
Access-Steuerelemente